package com.yike.user.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yike.user.entity.Agent;
import com.yike.user.param.AgentPageParam;

import com.yike.user.param.PlatformAgentPageParam;
import com.yike.user.param.SubAgentPageParam;
import com.yike.user.vo.AgentSearchDataVo;
import com.yike.user.vo.AgentVo;
import com.yike.user.vo.PlatformAgentVo;
import org.apache.ibatis.annotations.Mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 代理商表 Mapper 接口
 *
 * @author Sakura
 * @since 2024-08-26
 */
@Mapper
public interface AgentMapper extends BaseMapper<Agent> {

    AgentVo getAgentVo(@Param("agentNo") String agentNo);

    IPage<AgentVo> getAgentList(@Param("page") Page page,
                                @Param("param") AgentPageParam param);

    IPage<AgentVo> getSubAgentList(@Param("page") Page page, @Param("userId") Long userId,
                                   @Param("param") SubAgentPageParam param);

    Integer getCountSubAgent(@Param("agentId") Long agentId, @Param("certainDate") String certainDate);

    Integer getAddSubAgent(@Param("agentId") Long agentId, @Param("certainDate") String certainDate,
                           @Param("beginTime") String beginTime, @Param("endTime") String endTime);

    Integer getAgentShopNumber(@Param("agentId") Long agentId, @Param("certainDate") String certainDate);

    Integer getAgentOpenGarrisonNumber(@Param("agentId") Long agentId, @Param("certainDate") String certainDate);

    Integer getAgentCloseGarrisonNumber(@Param("agentId") Long agentId, @Param("certainDate") String certainDate);

    Integer getAgentOfflineGarrisonNumber(@Param("agentId") Long agentId, @Param("certainDate") String certainDate);

    List<AgentSearchDataVo> getAgentSearchData(@Param("agentId") Long agentId, @Param("keyword") String keyword);

    PlatformAgentVo getPlatformAgentVo(@Param("id") Long id);

    IPage<PlatformAgentVo> getPlatformAgentList(@Param("page") Page page,
                                                @Param("param") PlatformAgentPageParam param);


}
